package com.glsc.ngateway.platform.service.easyflow.enums;

import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

@Slf4j
public enum GWSystemRemindTaskEnum {

    beginTask("beginTask", "发起人"),
    remindTask("remindTask", "提醒");

    private String value;
    private String description;

    GWSystemRemindTaskEnum(String value, String description) {
        this.value = value;
        this.description = description;
    }

    public String getValue() {
        return value;
    }

    public String getDescription() {
        return description;
    }

    // 记录value-Enum的Map 在后续操作时可降低时间复杂度
    private static Map <String, GWSystemRemindTaskEnum> valueMap = new HashMap<>();

    static {// 在静态代码块中初始化Map
        for (GWSystemRemindTaskEnum e : values()) {
            valueMap.put(e.getValue(), e);
        }
    }

    /**
     * 通过value获取Enum
     *
     * @return GWSystemRemindTaskEnum
     * @date 2024-04-12
     * @author Houyw
     */
    public static GWSystemRemindTaskEnum getEnum(String value) {
        if (value == null || !valueMap.containsKey(value)) {
            log.error("{}中不存在{}！", "GWSystemRemindTaskEnum", value);
            return null;
        }
        return valueMap.get(value);
    }

    /**
     * 通过value获取对应的description
     *
     * @return GWSystemRemindTaskEnum
     * @date 2024-04-12
     * @author Houyw
     */
    public static String getDescription(String value) {
        if (value == null || !valueMap.containsKey(value)) {
            log.error("{}中不存在{}！", "GWSystemRemindTaskEnum", value);
            return null;
        }
        return valueMap.get(value).getDescription();
    }

    /**
     * 通过value判断是否存在
     *
     * @date 2024-04-12
     * @author Houyw
     */
    public static boolean checkContainsValue(String value) {
        return StrUtil.isNotBlank(value) && valueMap.containsKey(value);
    }

}